#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

'''
重点:
1. 发送上传文件的请求时, 需要用到files参数
2. files接收的数据是上传文件的数据流, file = {'file': open('xiaojiejie.jpg','rb')}    #上传文件的数据流
3. 在请求发送的过程中, 有随机生成的字符串,获取思路是: 在该请求前面的请求响应中去获取
如果是json格式的响应, 使用r.json()
如果是文本格式的响应, 需要用到正则表达式
'''

# 首页
s = requests.session()  # 使用Session的类生成一个会话对象, 代码会自动维护cookie
url = 'http://localhost:8888/smeoa/login'
r = s.get(url)  # 发送请求时使用s这个会话对话, 自动维护cookie

# 登陆
url = 'http://localhost:8888/smeoa/login/check_login'
params = {'emp_no': 'admin', 'password': 'admin'}
r = s.post(url, data=params)

# 断言登陆是否成功
if '退出' in r.text:
    print('登陆成功')
else:
    print('登陆失败')

# 日报首页
url = 'http://localhost:8888/smeoa/task/index'
r = s.post(url)
# 断言获取日报首页是否成功
if '所有任务' in r.text:
    print('获取日报首页成功')
else:
    print('获取日报首页失败')

# 添加附件
url = 'http://localhost:8888/smeoa/task/upload'
params = {'name': 'xiaojiejie.jpg'}  # 正文
file = {'file': open('xiaojiejie.jpg', 'rb')}  # 上传文件的数据流
r = s.post(url=url, data=params, files=file)  # data参数用来接收字典格式的正文, files参数用来接收上传文件的数据流
resp = r.json()  # 响应为JSON格式, 使用JSON方法来处理
sid = resp['sid']
print(sid)

# 提交任务
url = 'http://localhost:8888/smeoa/task/save'
params = {'ajax': '0', 'add_file': sid, 'executor': '总监2001|42', 'opmode': 'add', 'name': 'title1',
          'expected_time': '2020-04-01 17:20', 'content': 'content1'}
r = s.post(url=url, data=params)
if '新增成功' in r.text:
    print('任务添加成功')
else:
    print('任务添加失败')
